//接口和对象类型-小满

//声明类型
interface A {
    name: string
}

let a: A = {
    name: "火锅"
}

//更加复杂的数据类型
interface TypeList {
    age: number,
    name?: string,//添加一个？表示可选，比如用户首次还没有name的时候，那就没有name值，后续使用才会有name值
    say(): void,
    eat(): string,
    [propName: string]:any, //比如后台还会返回很多其他的属性，这个时候就用这个来占位，一般都是写any。因为不确定后台返回时候类型
    // [propName: string]: number | string  //也可以结合联合类型来固定可能出现的数据类型
}

let p: TypeList = {
    age: 23,
    name: "奶茶",
    phone: "18789890987",//这里就是多出来的属性
    say: () =>{
        console.log("我是ts");
        
    },
    eat:():string =>{
        return "吃火锅"
    }
}

console.log(p.eat());

//只读readonly


